#ifndef _CUDA_MAXPOOLING_CUH_
#define _CUDA_MAXPOOLING_CUH_

/* 
   defines interface to pool up and roll down a matrix 
 */
namespace cuda_matrix{
    /*
        sums up the pooling area of src and store to dst
     */
    template<int map_method,int st_method>
    inline void pool( Mat dst, const Mat src );
    
    /*
        roll down the value of pooler 
        add the value in poolie, and store to dst 
        poolie and dst can be the same here
     */
    template<int map_method,int st_method>
    inline void rolldown( Mat dst, const Mat poolie,const Mat pooler );    

};

#include "cuda_maxpooling.cu"

#endif
